package ace.module.sms.api;

import ace.cmp.core.model.R;
import ace.module.sms.api.model.input.SendTemplateInput;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;

/**
 * @author caspar
 * @date 2023/10/24 17:26
 */
public interface SmsApi {
  /**
   * 发送短信
   *
   * @param smsAppId    短信验证appid
   * @param phoneNumber 手机号码
   * @param content     内容
   * @return code=0 is success
   */
  R<Void> send(
      @Valid @NotNull Long smsAppId,
      @Valid @NotBlank String phoneNumber,
      @Valid @NotBlank String content);

  /**
   * 立刻发送模板短信
   *
   * @return code=0 is success
   */
  R<Void> sendTemplate(@Valid @NotNull SendTemplateInput input);

  /**
   * 发送验证码短信
   *
   * @param smsAppId    短信验证appid
   * @param phoneNumber 手机号码
   * @param code        验证码
   * @return code=0 is success
   */
  R<Void> sendVerifyCode(
      @Valid @NotNull Long smsAppId,
      @Valid @NotBlank String phoneNumber,
      @Valid @NotBlank String code);
}
